home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / gaim / sslconn.h < prev    next >
C/C++ Source or Header  |  2005-10-18  |  5KB  |  203 lines

  1. /**
  2.  * @file sslconn.h SSL API
  3.  * @ingroup core
  4.  *
  5.  * gaim
  6.  *
  7.  * Gaim is the legal property of its developers, whose names are too numerous
  8.  * to list here.  Please refer to the COPYRIGHT file distributed with this
  9.  * source distribution.
  10.  *
  11.  * This program is free software; you can redistribute it and/or modify
  12.  * it under the terms of the GNU General Public License as published by
  13.  * the Free Software Foundation; either version 2 of the License, or
  14.  * (at your option) any later version.
  15.  *
  16.  * This program is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  * GNU General Public License for more details.
  20.  *
  21.  * You should have received a copy of the GNU General Public License
  22.  * along with this program; if not, write to the Free Software
  23.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  24.  */
  25. #ifndef _GAIM_SSLCONN_H_
  26. #define _GAIM_SSLCONN_H_
  27.  
  28. #include "proxy.h"
  29.  
  30. #define GAIM_SSL_DEFAULT_PORT 443
  31.  
  32. typedef enum
  33. {
  34.     GAIM_SSL_HANDSHAKE_FAILED = 1,
  35.     GAIM_SSL_CONNECT_FAILED = 2
  36. } GaimSslErrorType;
  37.  
  38. typedef struct _GaimSslConnection GaimSslConnection;
  39.  
  40. typedef void (*GaimSslInputFunction)(gpointer, GaimSslConnection *,
  41.                                      GaimInputCondition);
  42. typedef void (*GaimSslErrorFunction)(GaimSslConnection *, GaimSslErrorType,
  43.                                      gpointer);
  44.  
  45. struct _GaimSslConnection
  46. {
  47.     char *host;
  48.     int port;
  49.     void *connect_cb_data;
  50.     GaimSslInputFunction connect_cb;
  51.     GaimSslErrorFunction error_cb;
  52.     void *recv_cb_data;
  53.     GaimSslInputFunction recv_cb;
  54.  
  55.     int fd;
  56.     int inpa;
  57.  
  58.     void *private_data;
  59. };
  60.  
  61. /**
  62.  * SSL implementation operations structure.
  63.  *
  64.  * Every SSL implementation must provide one of these and register it.
  65.  */
  66. typedef struct
  67. {
  68.     gboolean (*init)(void);
  69.     void (*uninit)(void);
  70.     GaimInputFunction connect_cb;
  71.     void (*close)(GaimSslConnection *gsc);
  72.     size_t (*read)(GaimSslConnection *gsc, void *data, size_t len);
  73.     size_t (*write)(GaimSslConnection *gsc, const void *data, size_t len);
  74.  
  75. } GaimSslOps;
  76.  
  77. #ifdef __cplusplus
  78. extern "C" {
  79. #endif
  80.  
  81. /**************************************************************************/
  82. /** @name SSL API                                                         */
  83. /**************************************************************************/
  84. /*@{*/
  85.  
  86. /**
  87.  * Returns whether or not SSL is currently supported.
  88.  *
  89.  * @return TRUE if SSL is supported, or FALSE otherwise.
  90.  */
  91. gboolean gaim_ssl_is_supported(void);
  92.  
  93. /**
  94.  * Makes a SSL connection to the specified host and port.
  95.  *
  96.  * @param account    The account making the connection.
  97.  * @param host       The destination host.
  98.  * @param port       The destination port.
  99.  * @param func       The SSL input handler function.
  100.  * @param error_func The SSL error handler function.
  101.  * @param data       User-defined data.
  102.  *
  103.  * @return The SSL connection handle.
  104.  */
  105. GaimSslConnection *gaim_ssl_connect(GaimAccount *account, const char *host,
  106.                                     int port, GaimSslInputFunction func,
  107.                                     GaimSslErrorFunction error_func,
  108.                                     void *data);
  109.  
  110. /**
  111.  * Makes a SSL connection using an already open file descriptor.
  112.  *
  113.  * @param account    The account making the connection.
  114.  * @param fd         The file descriptor.
  115.  * @param func       The SSL input handler function.
  116.  * @param error_func The SSL error handler function.
  117.  * @param data       User-defined data.
  118.  *
  119.  * @return The SSL connection handle.
  120.  */
  121. GaimSslConnection *gaim_ssl_connect_fd(GaimAccount *account, int fd,
  122.                                        GaimSslInputFunction func,
  123.                                        GaimSslErrorFunction error_func,
  124.                                        void *data);
  125.  
  126. /**
  127.  * Adds an input watcher for the specified SSL connection.
  128.  *
  129.  * @param gsc   The SSL connection handle.
  130.  * @param func  The callback function.
  131.  * @param data  User-defined data.
  132.  */
  133. void gaim_ssl_input_add(GaimSslConnection *gsc, GaimSslInputFunction func,
  134.                         void *data);
  135.  
  136. /**
  137.  * Closes a SSL connection.
  138.  *
  139.  * @param gsc The SSL connection to close.
  140.  */
  141. void gaim_ssl_close(GaimSslConnection *gsc);
  142.  
  143. /**
  144.  * Reads data from an SSL connection.
  145.  *
  146.  * @param gsc    The SSL connection handle.
  147.  * @param buffer The destination buffer.
  148.  * @param len    The maximum number of bytes to read.
  149.  *
  150.  * @return The number of bytes read.
  151.  */
  152. size_t gaim_ssl_read(GaimSslConnection *gsc, void *buffer, size_t len);
  153.  
  154. /**
  155.  * Writes data to an SSL connection.
  156.  *
  157.  * @param gsc    The SSL connection handle.
  158.  * @param buffer The buffer to write.
  159.  * @param len    The length of the data to write.
  160.  *
  161.  * @return The number of bytes written.
  162.  */
  163. size_t gaim_ssl_write(GaimSslConnection *gsc, const void *buffer, size_t len);
  164.  
  165. /*@}*/
  166.  
  167. /**************************************************************************/
  168. /** @name Subsystem API                                                   */
  169. /**************************************************************************/
  170. /*@{*/
  171.  
  172. /**
  173.  * Sets the current SSL operations structure.
  174.  *
  175.  * @param ops The SSL operations structure to assign.
  176.  */
  177. void gaim_ssl_set_ops(GaimSslOps *ops);
  178.  
  179. /**
  180.  * Returns the current SSL operations structure.
  181.  *
  182.  * @return The SSL operations structure.
  183.  */
  184. GaimSslOps *gaim_ssl_get_ops(void);
  185.  
  186. /**
  187.  * Initializes the SSL subsystem.
  188.  */
  189. void gaim_ssl_init(void);
  190.  
  191. /**
  192.  * Uninitializes the SSL subsystem.
  193.  */
  194. void gaim_ssl_uninit(void);
  195.  
  196. /*@}*/
  197.  
  198. #ifdef __cplusplus
  199. }
  200. #endif
  201.  
  202. #endif /* _GAIM_SSLCONN_H_ */
  203.